-- @owner: @nanyang12
-- @date: 2025/4/1
-- @testpoint:使用postgresql风格创建自定义函数，函数带CALLED ON NULL等参数，指定language为pltsql

--连接D库
@conn PrimaryDbDmode;
--创建插件
--create extension shark;
-- 带CALLED ON NULL INPUT，pltsql为大写
CREATE OR REPLACE FUNCTION add_numbers_called(a INT, b INT)
RETURNS INT
CALLED ON NULL INPUT
LANGUAGE PLTSQL AS $$
BEGIN
 -- 处理输入参数为 NULL 的情况
 IF a IS NULL THEN
 a := 0;
 END IF;
 IF b IS NULL THEN
 b := 0;
 END IF;

 RETURN a + b;
END;
$$;
/
-- 调用函数，测试输入包含 NULL 的情况
SELECT add_numbers_called(3, NULL);
--通过系统表查询函数信息，成功
select l.lanname from pg_language l join pg_proc p on l.oid = p.prolang and p.proname in ('add_numbers_called');
--清理环境
drop function if exists add_numbers_called;
